{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/Yusuf/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import tensorflow\n",
    "import ast\n",
    "import re\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>ticker</th>\n",
       "      <th>cik</th>\n",
       "      <th>doc_name</th>\n",
       "      <th>txt_link</th>\n",
       "      <th>GICS Sector</th>\n",
       "      <th>text</th>\n",
       "      <th>release_date</th>\n",
       "      <th>items</th>\n",
       "      <th>price_change</th>\n",
       "      <th>vix</th>\n",
       "      <th>rm_week</th>\n",
       "      <th>rm_month</th>\n",
       "      <th>rm_qtr</th>\n",
       "      <th>rm_year</th>\n",
       "      <th>signal</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001564590-18-006570.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001564590-18-006570.txt : 20180322 0001564590...</td>\n",
       "      <td>2018-03-22 16:22:07</td>\n",
       "      <td>['Item 5.07']</td>\n",
       "      <td>0.28</td>\n",
       "      <td>23.34</td>\n",
       "      <td>-0.41</td>\n",
       "      <td>-3.07</td>\n",
       "      <td>2.01</td>\n",
       "      <td>26.67</td>\n",
       "      <td>stay</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-18-000002.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-18-000002.txt : 20180214 0001090872...</td>\n",
       "      <td>2018-02-14 16:27:02</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>7.22</td>\n",
       "      <td>19.26</td>\n",
       "      <td>1.95</td>\n",
       "      <td>-5.76</td>\n",
       "      <td>-3.94</td>\n",
       "      <td>35.67</td>\n",
       "      <td>up</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001564590-18-000605.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001564590-18-000605.txt : 20180118 0001564590...</td>\n",
       "      <td>2018-01-18 16:09:52</td>\n",
       "      <td>['Item 5.02', 'Item 9.01']</td>\n",
       "      <td>0.47</td>\n",
       "      <td>12.22</td>\n",
       "      <td>1.22</td>\n",
       "      <td>5.17</td>\n",
       "      <td>3.38</td>\n",
       "      <td>39.20</td>\n",
       "      <td>stay</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-17-000015.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-17-000015.txt : 20171120 0001090872...</td>\n",
       "      <td>2017-11-20 16:09:02</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>0.31</td>\n",
       "      <td>10.65</td>\n",
       "      <td>2.71</td>\n",
       "      <td>1.31</td>\n",
       "      <td>10.13</td>\n",
       "      <td>40.26</td>\n",
       "      <td>stay</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-17-000011.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-17-000011.txt : 20170815 0001090872...</td>\n",
       "      <td>2017-08-15 16:12:29</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>5.19</td>\n",
       "      <td>12.04</td>\n",
       "      <td>-0.21</td>\n",
       "      <td>-3.34</td>\n",
       "      <td>4.39</td>\n",
       "      <td>21.40</td>\n",
       "      <td>up</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0 ticker      cik                  doc_name  \\\n",
       "0           0      A  1090872  0001564590-18-006570.txt   \n",
       "1           1      A  1090872  0001090872-18-000002.txt   \n",
       "2           2      A  1090872  0001564590-18-000605.txt   \n",
       "3           3      A  1090872  0001090872-17-000015.txt   \n",
       "4           4      A  1090872  0001090872-17-000011.txt   \n",
       "\n",
       "                                            txt_link  GICS Sector  \\\n",
       "0  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "1  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "2  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "3  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "4  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "\n",
       "                                                text         release_date  \\\n",
       "0  0001564590-18-006570.txt : 20180322 0001564590...  2018-03-22 16:22:07   \n",
       "1  0001090872-18-000002.txt : 20180214 0001090872...  2018-02-14 16:27:02   \n",
       "2  0001564590-18-000605.txt : 20180118 0001564590...  2018-01-18 16:09:52   \n",
       "3  0001090872-17-000015.txt : 20171120 0001090872...  2017-11-20 16:09:02   \n",
       "4  0001090872-17-000011.txt : 20170815 0001090872...  2017-08-15 16:12:29   \n",
       "\n",
       "                                     items  price_change    vix  rm_week  \\\n",
       "0                            ['Item 5.07']          0.28  23.34    -0.41   \n",
       "1  ['Item 2.02', 'Item 2.02', 'Item 9.01']          7.22  19.26     1.95   \n",
       "2               ['Item 5.02', 'Item 9.01']          0.47  12.22     1.22   \n",
       "3  ['Item 2.02', 'Item 2.02', 'Item 9.01']          0.31  10.65     2.71   \n",
       "4  ['Item 2.02', 'Item 2.02', 'Item 9.01']          5.19  12.04    -0.21   \n",
       "\n",
       "   rm_month  rm_qtr  rm_year signal  \n",
       "0     -3.07    2.01    26.67   stay  \n",
       "1     -5.76   -3.94    35.67     up  \n",
       "2      5.17    3.38    39.20   stay  \n",
       "3      1.31   10.13    40.26   stay  \n",
       "4     -3.34    4.39    21.40     up  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv(\"Data/texts_and_fin.csv\")\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['release_date'] = df['release_date'].map(lambda x: pd.to_datetime(x))\n",
    "df['items'] = df['items'].map(lambda x: ast.literal_eval(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Text PreProcessing\n",
    "1. Remove extra whitespace\n",
    "2. Tokenize\n",
    "3. Remove punctuation, stopwords, convert to lower case\n",
    "4. Lemmatize\n",
    "5. Load pre-trained word embeddings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# import spacy\n",
    "# from nltk.corpus import stopwords\n",
    "# import string\n",
    "# import matplotlib.pyplot as plt\n",
    "# import seaborn as sns\n",
    "\n",
    "# stop_words = stopwords.words(\"english\")\n",
    "# nlp = spacy.load(\"en_core_web_sm\")\n",
    "# nlp.max_length = 76131683\n",
    "\n",
    "# punctuations = string.punctuation\n",
    "\n",
    "from nltk.corpus import stopwords\n",
    "stop_words = stopwords.words(\"english\")\n",
    "from nltk.stem import WordNetLemmatizer\n",
    "from nltk.tokenize import word_tokenize\n",
    "wordnet_lemmatizer = WordNetLemmatizer()\n",
    "import string\n",
    "punctuations = string.punctuation\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "import dask.dataframe as dd\n",
    "from dask.multiprocessing import get\n",
    "from dask.diagnostics import ProgressBar"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cleanup_text(doc, logging=False):\n",
    "    doc = re.sub( '\\s+', ' ', doc ).strip()\n",
    "    doc = nlp(doc, disable=['parser', 'ner'])\n",
    "    tokens = [tok.lemma_.lower().strip() for tok in doc]\n",
    "    tokens = [tok for tok in tokens if tok.isalpha()]\n",
    "    tokens = [tok for tok in tokens if tok not in stop_words and tok not in punctuations]\n",
    "    tokens_len = len(tokens)\n",
    "    tokens = ' '.join(tokens)\n",
    "    return tokens,tokens_len\n",
    "\n",
    "def nltk_tokenizer(text):\n",
    "    try:\n",
    "        tokens = [word for word in word_tokenize(text) if word.isalpha()]\n",
    "        tokens = list(filter(lambda t: t not in punctuations, tokens))\n",
    "        tokens = list(filter(lambda t: t.lower() not in stop_words, tokens))\n",
    "        filtered_tokens = []\n",
    "        for token in tokens:\n",
    "            if re.search('[a-zA-Z]', token):\n",
    "                filtered_tokens.append(token)\n",
    "        filtered_tokens = list(\n",
    "            map(lambda token: wordnet_lemmatizer.lemmatize(token.lower()), filtered_tokens))\n",
    "        filtered_tokens = list(filter(lambda t: t not in punctuations, filtered_tokens))\n",
    "        return filtered_tokens\n",
    "    except Exception as e:\n",
    "        raise e\n",
    "\n",
    "def dask_tokenizer(df):\n",
    "    df['processed_text'] = df['text'].map(nltk_tokenizer)\n",
    "    df['text_len'] = df['processed_text'].map(lambda x: len(x))\n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[                                        ] | 0% Completed |  8min 40.5s"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The notebook server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--NotebookApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "NotebookApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[                                        ] | 0% Completed | 11min 28.6s"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The notebook server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--NotebookApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "NotebookApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[#########                               ] | 22% Completed | 30min 14.2s"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The notebook server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--NotebookApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "NotebookApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[############################            ] | 70% Completed | 46min 56.1s"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The notebook server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--NotebookApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "NotebookApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[################################        ] | 80% Completed | 52min 58.2s"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The notebook server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--NotebookApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "NotebookApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[########################################] | 100% Completed |  1hr  8min  7.7s\n",
      "[########################################] | 100% Completed |  1hr  8min  7.8s\n",
      "[########################################] | 100% Completed |  1hr  8min  7.9s\n"
     ]
    }
   ],
   "source": [
    "pbar = ProgressBar()\n",
    "pbar.register()\n",
    "ddata = dd.from_pandas(df, npartitions=20)\n",
    "df = ddata.map_partitions(dask_tokenizer).compute(get=get)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>ticker</th>\n",
       "      <th>cik</th>\n",
       "      <th>doc_name</th>\n",
       "      <th>txt_link</th>\n",
       "      <th>GICS Sector</th>\n",
       "      <th>text</th>\n",
       "      <th>release_date</th>\n",
       "      <th>items</th>\n",
       "      <th>price_change</th>\n",
       "      <th>vix</th>\n",
       "      <th>rm_week</th>\n",
       "      <th>rm_month</th>\n",
       "      <th>rm_qtr</th>\n",
       "      <th>rm_year</th>\n",
       "      <th>signal</th>\n",
       "      <th>processed_text</th>\n",
       "      <th>text_len</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001564590-18-006570.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001564590-18-006570.txt : 20180322 0001564590...</td>\n",
       "      <td>2018-03-22 16:22:07</td>\n",
       "      <td>['Item 5.07']</td>\n",
       "      <td>0.28</td>\n",
       "      <td>23.34</td>\n",
       "      <td>-0.41</td>\n",
       "      <td>-3.07</td>\n",
       "      <td>2.01</td>\n",
       "      <td>26.67</td>\n",
       "      <td>stay</td>\n",
       "      <td>[accession, number, conformed, submission, typ...</td>\n",
       "      <td>310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-18-000002.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-18-000002.txt : 20180214 0001090872...</td>\n",
       "      <td>2018-02-14 16:27:02</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>7.22</td>\n",
       "      <td>19.26</td>\n",
       "      <td>1.95</td>\n",
       "      <td>-5.76</td>\n",
       "      <td>-3.94</td>\n",
       "      <td>35.67</td>\n",
       "      <td>up</td>\n",
       "      <td>[accession, number, conformed, submission, typ...</td>\n",
       "      <td>2005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001564590-18-000605.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001564590-18-000605.txt : 20180118 0001564590...</td>\n",
       "      <td>2018-01-18 16:09:52</td>\n",
       "      <td>['Item 5.02', 'Item 9.01']</td>\n",
       "      <td>0.47</td>\n",
       "      <td>12.22</td>\n",
       "      <td>1.22</td>\n",
       "      <td>5.17</td>\n",
       "      <td>3.38</td>\n",
       "      <td>39.20</td>\n",
       "      <td>stay</td>\n",
       "      <td>[accession, number, conformed, submission, typ...</td>\n",
       "      <td>815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-17-000015.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-17-000015.txt : 20171120 0001090872...</td>\n",
       "      <td>2017-11-20 16:09:02</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>0.31</td>\n",
       "      <td>10.65</td>\n",
       "      <td>2.71</td>\n",
       "      <td>1.31</td>\n",
       "      <td>10.13</td>\n",
       "      <td>40.26</td>\n",
       "      <td>stay</td>\n",
       "      <td>[accession, number, conformed, submission, typ...</td>\n",
       "      <td>1794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-17-000011.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-17-000011.txt : 20170815 0001090872...</td>\n",
       "      <td>2017-08-15 16:12:29</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>5.19</td>\n",
       "      <td>12.04</td>\n",
       "      <td>-0.21</td>\n",
       "      <td>-3.34</td>\n",
       "      <td>4.39</td>\n",
       "      <td>21.40</td>\n",
       "      <td>up</td>\n",
       "      <td>[accession, number, conformed, submission, typ...</td>\n",
       "      <td>1816</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0 ticker      cik                  doc_name  \\\n",
       "0           0      A  1090872  0001564590-18-006570.txt   \n",
       "1           1      A  1090872  0001090872-18-000002.txt   \n",
       "2           2      A  1090872  0001564590-18-000605.txt   \n",
       "3           3      A  1090872  0001090872-17-000015.txt   \n",
       "4           4      A  1090872  0001090872-17-000011.txt   \n",
       "\n",
       "                                            txt_link  GICS Sector  \\\n",
       "0  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "1  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "2  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "3  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "4  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "\n",
       "                                                text         release_date  \\\n",
       "0  0001564590-18-006570.txt : 20180322 0001564590...  2018-03-22 16:22:07   \n",
       "1  0001090872-18-000002.txt : 20180214 0001090872...  2018-02-14 16:27:02   \n",
       "2  0001564590-18-000605.txt : 20180118 0001564590...  2018-01-18 16:09:52   \n",
       "3  0001090872-17-000015.txt : 20171120 0001090872...  2017-11-20 16:09:02   \n",
       "4  0001090872-17-000011.txt : 20170815 0001090872...  2017-08-15 16:12:29   \n",
       "\n",
       "                                     items  price_change    vix  rm_week  \\\n",
       "0                            ['Item 5.07']          0.28  23.34    -0.41   \n",
       "1  ['Item 2.02', 'Item 2.02', 'Item 9.01']          7.22  19.26     1.95   \n",
       "2               ['Item 5.02', 'Item 9.01']          0.47  12.22     1.22   \n",
       "3  ['Item 2.02', 'Item 2.02', 'Item 9.01']          0.31  10.65     2.71   \n",
       "4  ['Item 2.02', 'Item 2.02', 'Item 9.01']          5.19  12.04    -0.21   \n",
       "\n",
       "   rm_month  rm_qtr  rm_year signal  \\\n",
       "0     -3.07    2.01    26.67   stay   \n",
       "1     -5.76   -3.94    35.67     up   \n",
       "2      5.17    3.38    39.20   stay   \n",
       "3      1.31   10.13    40.26   stay   \n",
       "4     -3.34    4.39    21.40     up   \n",
       "\n",
       "                                      processed_text  text_len  \n",
       "0  [accession, number, conformed, submission, typ...       310  \n",
       "1  [accession, number, conformed, submission, typ...      2005  \n",
       "2  [accession, number, conformed, submission, typ...       815  \n",
       "3  [accession, number, conformed, submission, typ...      1794  \n",
       "4  [accession, number, conformed, submission, typ...      1816  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv(\"Data/lemmatized_text.csv\",chunksize=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>ticker</th>\n",
       "      <th>cik</th>\n",
       "      <th>doc_name</th>\n",
       "      <th>txt_link</th>\n",
       "      <th>GICS Sector</th>\n",
       "      <th>text</th>\n",
       "      <th>release_date</th>\n",
       "      <th>items</th>\n",
       "      <th>price_change</th>\n",
       "      <th>vix</th>\n",
       "      <th>rm_week</th>\n",
       "      <th>rm_month</th>\n",
       "      <th>rm_qtr</th>\n",
       "      <th>rm_year</th>\n",
       "      <th>signal</th>\n",
       "      <th>processed_text</th>\n",
       "      <th>text_len</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001564590-18-006570.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001564590-18-006570.txt : 20180322 0001564590...</td>\n",
       "      <td>2018-03-22 16:22:07</td>\n",
       "      <td>['Item 5.07']</td>\n",
       "      <td>0.28</td>\n",
       "      <td>23.34</td>\n",
       "      <td>-0.41</td>\n",
       "      <td>-3.07</td>\n",
       "      <td>2.01</td>\n",
       "      <td>26.67</td>\n",
       "      <td>stay</td>\n",
       "      <td>['accession', 'number', 'conformed', 'submissi...</td>\n",
       "      <td>310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-18-000002.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-18-000002.txt : 20180214 0001090872...</td>\n",
       "      <td>2018-02-14 16:27:02</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>7.22</td>\n",
       "      <td>19.26</td>\n",
       "      <td>1.95</td>\n",
       "      <td>-5.76</td>\n",
       "      <td>-3.94</td>\n",
       "      <td>35.67</td>\n",
       "      <td>up</td>\n",
       "      <td>['accession', 'number', 'conformed', 'submissi...</td>\n",
       "      <td>2005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001564590-18-000605.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001564590-18-000605.txt : 20180118 0001564590...</td>\n",
       "      <td>2018-01-18 16:09:52</td>\n",
       "      <td>['Item 5.02', 'Item 9.01']</td>\n",
       "      <td>0.47</td>\n",
       "      <td>12.22</td>\n",
       "      <td>1.22</td>\n",
       "      <td>5.17</td>\n",
       "      <td>3.38</td>\n",
       "      <td>39.20</td>\n",
       "      <td>stay</td>\n",
       "      <td>['accession', 'number', 'conformed', 'submissi...</td>\n",
       "      <td>815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-17-000015.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-17-000015.txt : 20171120 0001090872...</td>\n",
       "      <td>2017-11-20 16:09:02</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>0.31</td>\n",
       "      <td>10.65</td>\n",
       "      <td>2.71</td>\n",
       "      <td>1.31</td>\n",
       "      <td>10.13</td>\n",
       "      <td>40.26</td>\n",
       "      <td>stay</td>\n",
       "      <td>['accession', 'number', 'conformed', 'submissi...</td>\n",
       "      <td>1794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>A</td>\n",
       "      <td>1090872</td>\n",
       "      <td>0001090872-17-000011.txt</td>\n",
       "      <td>http://www.sec.gov/Archives/edgar/data/1090872...</td>\n",
       "      <td>Health Care</td>\n",
       "      <td>0001090872-17-000011.txt : 20170815 0001090872...</td>\n",
       "      <td>2017-08-15 16:12:29</td>\n",
       "      <td>['Item 2.02', 'Item 2.02', 'Item 9.01']</td>\n",
       "      <td>5.19</td>\n",
       "      <td>12.04</td>\n",
       "      <td>-0.21</td>\n",
       "      <td>-3.34</td>\n",
       "      <td>4.39</td>\n",
       "      <td>21.40</td>\n",
       "      <td>up</td>\n",
       "      <td>['accession', 'number', 'conformed', 'submissi...</td>\n",
       "      <td>1816</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  Unnamed: 0.1 ticker      cik                  doc_name  \\\n",
       "0           0             0      A  1090872  0001564590-18-006570.txt   \n",
       "1           1             1      A  1090872  0001090872-18-000002.txt   \n",
       "2           2             2      A  1090872  0001564590-18-000605.txt   \n",
       "3           3             3      A  1090872  0001090872-17-000015.txt   \n",
       "4           4             4      A  1090872  0001090872-17-000011.txt   \n",
       "\n",
       "                                            txt_link  GICS Sector  \\\n",
       "0  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "1  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "2  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "3  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "4  http://www.sec.gov/Archives/edgar/data/1090872...  Health Care   \n",
       "\n",
       "                                                text         release_date  \\\n",
       "0  0001564590-18-006570.txt : 20180322 0001564590...  2018-03-22 16:22:07   \n",
       "1  0001090872-18-000002.txt : 20180214 0001090872...  2018-02-14 16:27:02   \n",
       "2  0001564590-18-000605.txt : 20180118 0001564590...  2018-01-18 16:09:52   \n",
       "3  0001090872-17-000015.txt : 20171120 0001090872...  2017-11-20 16:09:02   \n",
       "4  0001090872-17-000011.txt : 20170815 0001090872...  2017-08-15 16:12:29   \n",
       "\n",
       "                                     items  price_change    vix  rm_week  \\\n",
       "0                            ['Item 5.07']          0.28  23.34    -0.41   \n",
       "1  ['Item 2.02', 'Item 2.02', 'Item 9.01']          7.22  19.26     1.95   \n",
       "2               ['Item 5.02', 'Item 9.01']          0.47  12.22     1.22   \n",
       "3  ['Item 2.02', 'Item 2.02', 'Item 9.01']          0.31  10.65     2.71   \n",
       "4  ['Item 2.02', 'Item 2.02', 'Item 9.01']          5.19  12.04    -0.21   \n",
       "\n",
       "   rm_month  rm_qtr  rm_year signal  \\\n",
       "0     -3.07    2.01    26.67   stay   \n",
       "1     -5.76   -3.94    35.67     up   \n",
       "2      5.17    3.38    39.20   stay   \n",
       "3      1.31   10.13    40.26   stay   \n",
       "4     -3.34    4.39    21.40     up   \n",
       "\n",
       "                                      processed_text  text_len  \n",
       "0  ['accession', 'number', 'conformed', 'submissi...       310  \n",
       "1  ['accession', 'number', 'conformed', 'submissi...      2005  \n",
       "2  ['accession', 'number', 'conformed', 'submissi...       815  \n",
       "3  ['accession', 'number', 'conformed', 'submissi...      1794  \n",
       "4  ['accession', 'number', 'conformed', 'submissi...      1816  "
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv(\"Data/lemmatized_text.csv\")\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "df.drop(['Unnamed: 0','Unnamed: 0.1',\"doc_name\",'txt_link','text'],axis=1,inplace=True)\n",
    "df['items'] = df['items'].map(lambda x: ast.literal_eval(x))\n",
    "df['items'] = df['items'].map(lambda items: [' '.join(x.split()) for x in items])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/Yusuf/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg.\n",
      "  warnings.warn(\"The 'normed' kwarg is deprecated, and has been \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.style.use(\"ggplot\")\n",
    "df['text_len'].plot.hist(bins=50,normed=True)\n",
    "plt.xlabel(\"Document Length\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "34603"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "int(df['text_len'].quantile(.9))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    1.671000e+04\n",
       "mean     1.951087e+04\n",
       "std      7.462709e+04\n",
       "min      9.500000e+01\n",
       "25%      6.800000e+02\n",
       "50%      1.902500e+03\n",
       "75%      8.176750e+03\n",
       "max      2.934190e+06\n",
       "Name: text_len, dtype: float64"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['text_len'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "425"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['ticker'].nunique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(y=df['GICS Sector'])\n",
    "plt.savefig(\"Graphs/sectors.png\",format=\"png\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAENCAYAAAAykHOlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHK5JREFUeJzt3X9UlGX+//HnAELiCM4MokvaSfwRahLqWOiWEnHO55ysXdd+7HHXNiRPfaTVY7am5Va7ndZwPxoeQnNLwjq6p8yU2n7s7mEJ3GI9gQJpkmb2i0UXYVBE5IfMfP/w2xxR3Mbi4hZ4Pf7ivuaae96X0/Q613Xdc4/N5/P5EBER6WJBVhcgIiK9kwJGRESMUMCIiIgRChgRETFCASMiIkYoYERExAgFjIiIGKGAERERIxQwIiJihAJGRESMCLG6AKtVV1dbXYKISI8RExMTcN9uCZj169ezZ88eIiMjWbNmDQCNjY1kZmZy7NgxBg8ezEMPPYTdbsfn85Gbm0tZWRlhYWGkp6cTGxsLQGFhIdu3bwdg9uzZJCUlAXD48GHWrVtHa2srEydOZN68edhstu4YmoiIXES3LJElJSXx2GOPdWjLy8tjwoQJZGVlMWHCBPLy8gAoKyvj6NGjZGVlcf/997Nx40bgbCBt27aNlStXsnLlSrZt20ZjYyMAL774Ig888ABZWVkcPXqU8vLy7hiWiIj8F90SMOPGjcNut3doKykpYcaMGQDMmDGDkpISAEpLS5k+fTo2m40xY8Zw6tQp6uvrKS8vJz4+Hrvdjt1uJz4+nvLycurr6zl9+jRjxozBZrMxffp0/7lERMQ6lu3BnDhxAofDAYDD4aChoQEAj8dDVFSUv5/L5cLj8eDxeHC5XP52p9PZafu3/S8mPz+f/Px8ADIyMjq8loiIdJ3LbpO/s5+nudh+is1m67T/f5OSkkJKSor/uLa29tIKFBHpwy5lk9+yy5QjIyOpr68HoL6+noiICODsDOTc/+nX1dXhcDhwOp3U1dX52z0eDw6HA5fL1aG9rq4Op9PZTaMQEZGLsSxg3G43RUVFABQVFTFlyhR/+86dO/H5fBw8eJDw8HAcDgcJCQlUVFTQ2NhIY2MjFRUVJCQk4HA46N+/PwcPHsTn87Fz507cbrdVwxIRkf/P1h0/mbx27Vr279/PyZMniYyM5O6772bKlClkZmZSW1tLVFQUS5Ys8V+mnJOTQ0VFBaGhoaSnpzNy5EgACgoK2LFjB3D2MuWbb74ZgM8//5z169fT2tpKQkICaWlpAV+mrO/BiIgE7lKWyLolYC5nChgRkcBddl+0FLFS6sv/srqEPmHTvVOtLkEuM7oXmYiIGKGAERERIxQwIiJihAJGRESMUMCIiIgRChgRETFCASMiIkYoYERExAgFjIiIGKGAERERIxQwIiJihAJGRESMUMCIiIgRChgRETFCASMiIkYoYERExAgFjIiIGKGAERERIxQwIiJihAJGRESMUMCIiIgRChgRETFCASMiIkYoYERExAgFjIiIGKGAERERIxQwIiJihAJGRESMUMCIiIgRChgRETFCASMiIkYoYERExIgQqwt4++23KSgowGazMXz4cNLT0zl+/Dhr166lsbGRESNGsHDhQkJCQmhrayM7O5vDhw8zcOBAFi9eTHR0NAA7duygoKCAoKAg5s2bR0JCgsUjExHp2yydwXg8Ht577z0yMjJYs2YNXq+X4uJiNm/ezMyZM8nKymLAgAEUFBQAUFBQwIABA3juueeYOXMmW7ZsAaCqqori4mKeffZZVqxYQU5ODl6v18qhiYj0eZYvkXm9XlpbW2lvb6e1tZVBgwbxySefkJiYCEBSUhIlJSUAlJaWkpSUBEBiYiL79u3D5/NRUlLCtGnT6NevH9HR0QwdOpRDhw5ZNSQREcHiJTKn08ntt9/OggULCA0N5brrriM2Npbw8HCCg4P9fTweD3B2xuNyuQAIDg4mPDyckydP4vF4GD16dIfzfvscERGxhqUB09jYSElJCevWrSM8PJxnn32W8vLyi/b3+XwXtNlstk7bLyY/P5/8/HwAMjIyiIqKuvTCReQC+izJ+SwNmL179xIdHU1ERAQAN9xwAwcOHKCpqYn29naCg4PxeDw4nU4AXC4XdXV1uFwu2tvbaWpqwm63+9u/de5zzpeSkkJKSor/uLa21uAIRfoOfZb6hpiYmID7WroHExUVxWeffUZLSws+n4+9e/cybNgwxo8fz65duwAoLCzE7XYDMHnyZAoLCwHYtWsX48ePx2az4Xa7KS4upq2tjZqaGo4cOcKoUaOsGpaIiGDxDGb06NEkJiaybNkygoODufrqq0lJSWHSpEmsXbuWV199lREjRpCc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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Count plot of signals\n",
    "sns.countplot(df['signal'])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Classes are imbalanced, will need to adjust"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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2bNnY7FYmDx5Mp2dnbS2tlJTU0NycjI2mw2bzUZycjI1NTWh2AUREelFyM+JNDY2cvToUSZOnEhbWxt2ux04VzTt7e0AuN1u4uLi/Os4nU7cbjdutxun0+kfdzgcuN3u0O6AiIj4hWQ667wzZ86wceNGli1bRnR09GWXMwzjkjGLxdLrsr2NFxcXU1xcDEBOTs5FhSQif19gPy8NfZ7jSgLL2d7nOa7kWv/8CVmJ9PT0sHHjRmbNmsVtt90GQGxsLK2trdjtdlpbW4mJiQHOHXk0Nzf7121pacFut+NwODhw4IB/3O12k5SUdMl7uVwuXC6X//WF2xKRv2+g/LwEljOqz3NcyUD5fn5eQkJCQMuFZDrLMAwKCgoYM2YMd911l388NTWVsrIyAMrKykhLS/OPl5eXYxgGhw4dIjo6GrvdTkpKCrW1tXg8HjweD7W1taSkpIRiF0REpBchORI5ePAg5eXl3HDDDfz4xz8G4N5772XRokXk5uZSUlJCXFwcWVlZANxyyy3s27ePNWvWEBUVRWZmJgA2m4177rmHRx55BIDFixfryiwRkTCyGL2dgLjG1NfXhzuCSEB+WLEr3BH49cy5V1xmzXvhPyeSN2P0FZep/Uv4p7NuntUV7gim9KvpLBERuTapRERExDSViIiImKYSERER01QiIiJimkpERERMU4mIiIhpKhERETFNJSIiIqapRERExLSQ3gpeREQuZv19+G9XD+C7N8bUejoSERER01QiIiJimkpERERMU4mIiIhpKhERETFNJSIiIqapRERExDSViIiImKYSERER01QiIiJimkpERERMU4mIiIhpKhERETFNJSIiIqapRERExLSQPE9ky5Yt7Nu3j9jYWDZu3AiAx+MhNzeXpqYm4uPjWbduHTabDcMwKCwspLq6mqFDh5KZmUliYiIApaWlvPHGGwBkZGQwZ86cUMQXEZHLCMmRyJw5c3j00UcvGisqKmLq1Knk5eUxdepUioqKAKiurqahoYG8vDx++MMf8tJLLwHnSmfHjh2sX7+e9evXs2PHDjweTyjii4jIZYTkSCQpKYnGxsaLxiorK3nqqacASE9P56mnnmLp0qVUVVUxe/ZsLBYLkydPprOzk9bWVurq6khOTsZmswGQnJxMTU0Nd9xxRyh2QQa4+//fxnBHAOClr/wo3BFEgipsj8dta2vD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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df['release_date'] = df['release_date'].map(lambda x: pd.to_datetime(x))\n",
    "sns.countplot(pd.DatetimeIndex(df['release_date']).year)\n",
    "plt.savefig(\"Graphs/year_balances.png\",format=\"png\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
